package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
/*
1.整合mp
2.配置数据源
 1）导入数据库驱动
 2）在applacation.yml配置数据源相关信息
 2.配置mp
  1）使用mapperscan
  2）告诉mp.sql映射文件地址
 2、逻辑删除
 1.配置全局删除规则
 2.配置逻辑删除组件
 3.配置逻辑删除字段注解
 3、JSR303
 1）、给bean添加注解valid ，并定义自己的提示
 2）、开启校验功能@valid
 效果：校验错误以后会有默认的响应，
 3）、紧跟BindingResult就可以知道校验的结果

 4.统一的异常处理
 @ControllerAdvice
 1)、分组校验
 给校验注解分析情况@valided(addGroup.class)
 默认指定分组的校验注解@notblank,在分组校验情况@validated({addgroup.class})下不生效
 5.自定义校验
 编写自定义注解 编写校验器ConstraintValidator
 关联注解和校验器
@Documented
@Constraint(validatedBy = {ListValueConstraintValidayor.class})
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)//可以指定多个不同的校验器
 */

@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@EnableDiscoveryClient
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
@EnableCaching
@EnableRedisHttpSession
public class GulimallProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }
}
